---
title: Custom API
---

**CustomApiTools** enable an Agent to make HTTP requests to any external API with customizable authentication and parameters.

## Prerequisites

The following example requires the `requests` library.

```shell
pip install requests
```

## Example

The following agent will use CustomApiTools to make API calls to the Dog CEO API.

```python cookbook/tools/custom_api_tools.py
from agno.agent import Agent
from agno.tools.api import CustomApiTools

agent = Agent(
    tools=[CustomApiTools(base_url="https://dog.ceo/api")],
    markdown=True,
)

agent.print_response(
    'Make API calls to the following two different endpoints: /breeds/image/random and /breeds/list/all to get a random dog image and list of dog breeds respectively. Use GET method for both calls.'
)
```

## Toolkit Params

| Parameter              | Type                | Default | Description                                                |
| ---------------------- | ------------------- | ------- | ---------------------------------------------------------- |
| `base_url`             | `str`               | `None`  | Base URL for API calls                                     |
| `username`             | `str`               | `None`  | Username for basic authentication                          |
| `password`             | `str`               | `None`  | Password for basic authentication                          |
| `api_key`              | `str`               | `None`  | API key for bearer token authentication                    |
| `headers`              | `Dict[str, str]`    | `None`  | Default headers to include in requests                     |
| `verify_ssl`           | `bool`              | `True`  | Whether to verify SSL certificates                         |
| `timeout`              | `int`               | `30`    | Request timeout in seconds                                 |
| `enable_make_request`  | `bool`              | `True`  | Enables functionality to make HTTP requests               |
| `all`                  | `bool`              | `False` | Enables all functionality when set to True               |

## Toolkit Functions

| Function       | Description                                                                                                                                                |
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `make_request` | Makes an HTTP request to the API. Takes method (GET, POST, etc.), endpoint, and optional params, data, headers, and json_data parameters.                  |

## Developer Resources

- View [Tools](https://github.com/agno-agi/agno/blob/main/libs/agno/agno/tools/api.py)
- View [Cookbook](https://github.com/agno-agi/agno/tree/main/cookbook/tools/custom_api_tools.py)
```